I. Field of the Invention
The present invention relates to communications. More particularly, the present invention relates to a method for selecting cyclic redundancy check (CRC) polynomials for linear coded systems.
II. Description of the Related Art
With the advent of digital communications and the need to transmit large amounts of data through an impaired and bandlimited channel, the need for coding of digital data to facilitate correct data reception is of great significance. Data transmissions are typically hindered by impairments in the transmission channel, namely additive noise and spurious signals within the transmission bandwidth. The transmit power is limited by practical considerations and the transmitted signal is attenuated by the path loss and may be distorted by other phenomenon, such as multipath, before it reaches the receiver. The design of a digital communications system entails the determination of the worse case signal quality at which the receiver is expected to operate. This signal quality is measured as an energy-per-bit-to-noise ratio (Eb/No) and is determined by the transmitted power, path loss and noise and interference. The minimum Eb/No which yields the desired level of performance is considered the system threshold level.
At the threshold level, the probability of error (PE) for any digital transmission scheme such as binary shift keying (BPSK), quaternary phase shift keying (QPSK), offset quaternary phase shift keying (OQPSK), or quadrature amplitude modulation (QAM) can be calculated. Typically the PE of the selected transmission scheme is not adequate for the application. Improvement in the PE is achieved by encoding the digital data before transmission and decoding the data at the receiver. The coding scheme is determined by the requirements of the application and the channel characteristic. Coding allows for detection and correction of errors in the transmitted data at the expense of a lower effective data rate.
Two classes of codes, convolutional codes and block codes, are utilized to improve PE. Convolutional codes provide good error correcting capability but typically output correlated bursts of error. Also, the Viterbi decoder supports the use of soft decisions to improve performance with minimal increase in hardware complexity. Block codes can be error detecting codes, such as the CRC code, or error detecting and correcting codes, such as the Reed-Solomon code. CRC code is utilized in many communication systems because of the performance provided by the CRC code and the simplicity in implementing the decoder. When a single code cannot provide the required level of performance, a concatenated code comprising two or more codes can be used. An exemplary communication system which employs a concatenated code comprising a convolutional code and a CRC code is a code division multiple access (CDMA) communication system as disclosed in U.S. Pat. No. 4,901,307, entitled "SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS", and U.S. Pat. No. 5,103,459, entitled "SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEPHONE SYSTEM", both assigned to the assignee of the present invention and incorporated by reference herein.
A rate 1/N convolutional encoder encodes each input bit into N code bits called a code branch according to a set of N generator polynomials. Each generator polynomial G(x) computes one code bit. The N code bits are combined into an N-bit code branch. The constraint length K of the encoder is the number of data bits used in the encoding process and determines the error correcting capability of the code. Long constraint length K yields better performance at the expense of hardware and computational complexity. A state is designated by the K-1 prior input bits and there are 2.sup.K-1 possible states. For each of the 2.sup.K-1 states, a `0` or `1` input bit results in one of two possible code branches. Since each input bit is encoded into N code bits, the code rate for the convolutional encoder is 1/N. Other code rates could be obtained from a 1/N code by puncturing the code bits. Punctured codes are thoroughly treated by J. Cain, G. Clark, and J. Geist in "Punctured Convolutional Codes of Rate (n-1)/n and Simplified Maximum Likelihood Decoding," IEEE Transaction on Information Theory, IT-25, pgs. 97-100, January 1979.
Typically, a Viterbi decoder is used to decode the transmitted code branches at the receiver. A discussion on the theory and operation of the Viterbi decoder is contained in the paper "Convolutional Codes and Their Performance in Communication Systems"by A. Viterbi, IEEE Transaction on Communication Technology, Vol. COM19, no. 5, October 1971, pgs. 821-835. Under certain assumptions about the channel noise, the Viterbi decoder performs the maximum likelihood decoding of the transmitted data path. For each received code branch, the branch metric of all branches entering each state is computed and added to the corresponding prior path metrics. The best path entering each state is selected and stored as the new path metric. The selected path is stored in a path memory. In "Development of Variable Rate Viterbi Decoder and its Performance Characteristics," Sixth International Conference on Digital Satellite Communications, Phoenix, AZ, September 1983, Y. Yasuda et al. show that the survivor paths with the lowest path metric all converge to the same path after a certain chain back depth. Thus, a Viterbi decoded bit is obtained by tracing a path back by at least the chain back distance.
A CRC code is a linear, systematic, and cyclic block code that can reliably detect a burst of errors of length n-k or less, where k is the input data length and n is the output code length. CRC coding is well known in the art and a good treatment of the topic is found in a number of references, including "Error Control Coding: Fundamentals and Applications" by S. Lin and D. Costello", Prentice Hall, 1985. The CRC code is determined by the CRC polynomial P(x) which is of degree (n-k). For an n-k CRC code, blocks of k data symbols are encoded into blocks of n code symbols called a code word.
In a systematic block code, the k data symbols form the first k code symbols of the code word. The n-k parity symbols are formed by a linear combination of the k data symbols according to the generator polynomial P(x). Because of the linear, systematic, and cyclic properties of the CRC code, the encoding process is easily achieved with simple shift registers and combinatory logic. Similarly, decoding is easily performed at the receiver by dividing the received symbols with the generator polynomial. The division can be achieved with the same simple circuit used to generate the parity symbols. If there are no transmission errors, the content of the shift register is zero.
In the exemplary CDMA communication system, the convolutional code and the CRC code are determined by the "TIA/EIA/IS-95 Mobile Station-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System", hereinafter referred to as the IS-95 standard. The convolutional code specified by the IS-95 standard is an optimal rate 1/2, K=9 convolutional code for the forward link and a rate 1/3, K=9 convolutional code for the reverse link. However, the CRC code specified by the IS-95 standard is selected with the assumption that the input data is random (e.g. white noise). However, this assumption is not valid for a concatenated code, such as that used in the CDMA communication system, and results in a sub-optimal CRC code.